-- Copyright (c) 2015,2016 Lucky Byte, Inc.
--
-- Summary : POS 009.1 内部交易处理(签到)
--
-- Author  : 吴小虎 <xiaohu@lucky-byte.com>
-- Since   : 2016.7.9
--
-- History
--  * 2015.7.9 : 创建此文件
--

-- 处理平台签到交易
--
local _inner_proc_t1 = function()
    logger.debug('开始处理 POS 009.1 终端[%s]签到...', reqt.term.get('termid'))

    local _tmk = reqt.term.get('tmk')
    if not _tmk then
        notify.error('平台内终端[%s]未配置终端主密钥，处理终端签到失败.',
            reqt.term.get('termid'))
        return resp.respkt('01')
    end

    -- 生成工作密钥
    local _work_keys = lib091._gen_work_keys(reqt.packet, _tmk)
    if not _work_keys then
        logger.error('生成终端工作密钥失败.')
        return resp.respkt('01')
    end

    -- 更新当前终端的工作密钥
    local _keys = {
        pik = _work_keys.pik_e or '',
        tdk = _work_keys.tdk_e or '',
        mak = _work_keys.mak_e or '',
    }
    jdbc.update([[
        update pay_terms set keys = ? where uuid = ?
    ]], core.json.encode(_keys), reqt.term.get('uuid'))

    -- 构造响应报文
    local _respkt = resp.respkt('00')

    _respkt.set('11', reqt.packet.get('11'))
    _respkt.set('12', os.date('%H%M%S'))
    _respkt.set('13', os.date('%m%d'))
    _respkt.set('32', '00000000')
    _respkt.set('37', os.date('%y%m%d%H%M%S'))
    _respkt.set('41', reqt.packet.get('41'))
    _respkt.set('42', reqt.packet.get('42'))
    _respkt.set('60', reqt.packet.get('60'))

    -- 不同的签到方式返回不同格式的报文
    local _micode = string.sub(reqt.packet.get('60'), 9, 11)
    if _micode == '003' then    -- 双倍
        local _f62 = string.format('%s%s', _work_keys.pik_cv, _work_keys.mak_cv)
        _respkt.set('62', _f62)
    end
    if _micode == '004' then    -- 双倍-含磁道
        local _f62 = string.format('%s%s%s',
            _work_keys.pik_cv, _work_keys.mak_cv, _work_keys.tdk_cv)
        _respkt.set('62', _f62)
    end
    return _respkt
end


return _inner_proc_t1
